Establishing priority among different users is important in relational database systems that deal with complex queries made by many users simultaneously against large volumes of data. Different users can tie up various resources of the database system for long periods of time if the level of resource usage is not controlled. The productivity of users whose activities depend upon information in the database system can be adversely impacted if other users are monopolizing the resources even though the information being retrieved by their queries is not immediately necessary.
Constraints on both processing resources and input/output resources can limit the ability of a database system to respond to queries by users. A large number of system administrators would be necessary to monitor and change the resource allocations for all the tasks initiated by users. For some systems, many thousands of users can have active database system sessions simultaneously. Large databases can experience problems related to the user workload which are site specific and require careful analysis and fine tuning. Those problems can also directly affect the system's performance and usability. Database users, their support engineers, database administrators and developers desire to have some way to gather information and diagnose workload-related problems so that recommendations for tuning and task prioritization can be made.
Existing techniques for controlling use of resources include rigid limits based on the group membership of the user. Such techniques are configured by modifying the group membership or changing the rigid limits that apply to the group.